int atoi(const char *str)
{
    assert(str != NULL);
    int value = 0;
    bool b_plus = true; //判断符号

    switch(*str) { //过滤符号
        case '+':
            str++;
            break;

        case '-':
            b_plus = false;
            str++;
            break;

        default:
            break;
    }

    while('\0' != *str) {
        value = (value * 10) + (*str - '0');
        str++;
    }

    if(!b_plus) {
        value = -value;
    }

    return value;
}
